package com.ilxqx.generator.parser.impl;

import com.ilxqx.generator.parser.Rules;
import com.ilxqx.generator.parser.Table;
import com.ilxqx.generator.parser.TableField;
import com.ilxqx.generator.util.ConvertUtils;
import lombok.Setter;

import java.util.List;

/**
 * Table实现类
 * @author venus
 */
@Setter
public class TableImpl implements Table {

    /**
     * 表名
     */
    private String tableName;

    /**
     * 表注释
     */
    private String tableComment;

    /**
     * 表规则
     */
    private Rules tableRules;

    /**
     * 表字段
     */
    private List<TableField> tableFields;

    /**
     * 获取表名
     *
     * @return 表名
     */
    @Override
    public String getName() {
        return this.tableName;
    }

    /**
     * 获取表注释
     *
     * @return 表注释
     */
    @Override
    public String getComment() {
        return this.tableComment;
    }

    /**
     * 获取表中的字段
     *
     * @return 字段List
     */
    @Override
    public List<TableField> getFields() {
        return this.tableFields;
    }

    /**
     * 获取表级规则
     *
     * @return 规则对象
     */
    @Override
    public Rules getRules() {
        return this.tableRules;
    }

    /**
     * 获取驼峰命名
     *
     * @return 驼峰命名
     */
    @Override
    public String getCamelName() {
        return ConvertUtils.dashToCamel(this.tableName);
    }

    /**
     * 获取小写驼峰命名
     *
     * @return 小写驼峰命名
     */
    @Override
    public String getLowerCamelName() {
        return ConvertUtils.dashToFirstLowerCamel(this.tableName);
    }

    /**
     * 获取中划线命名
     *
     * @return 中划线命名
     */
    @Override
    public String getKebabName() {
        return ConvertUtils.dashToKebab(this.tableName);
    }

}
